using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Marlimer.Logical.Universal;
using Marlimer.Common;
using Marlimer.Comercial.Reportes.Crystals;

namespace Marlimer.Comercial.Reportes.Formularios
{
    public partial class frm_PrintDocumentos : Form
    {
        luni_TipoDocVta luni_tipodocvta = new luni_TipoDocVta();
        List<InfoParamRpt> paramsrpt = new List<InfoParamRpt>();
        
        rptPrintFacturas RptPrintFacturas = new rptPrintFacturas();
        rptPrintBoletas RptPrintBoletas = new rptPrintBoletas();
        rptPrintNotasCredito RptPrintNotasCredito = new rptPrintNotasCredito(); 

        public frm_PrintDocumentos()
        {
            InitializeComponent();
        }

        private void frm_PrintDocumentos_Load(object sender, EventArgs e)
        {
            this.Location = new Point(0, 0);
            txtSerie.Text = Convert.ToString(Session.getParametros().cnum_serie);
            Util.LlenarDataCombo(luni_tipodocvta.getDTTipoDocvta(), cboTipoDocVta, false);
        }

        private void txtGeneralEntero_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = Util.validaTecla(e.KeyChar, "Entero", ((TextBox)sender).Text, true);
        }

        private void cboGeneral_KeyPress(object sender, KeyPressEventArgs e)
        {
            Util.validaEnter(e.KeyChar);
        }

        private void txtGeneralSelect_Enter(object sender, EventArgs e)
        {
            Util.selectAllText(((TextBox)sender));
        }


        private void nuevaBusqueda()
        {
            txtSerie.Text = Convert.ToString(Session.getParametros().cnum_serie);
            txtNumInicial.Text = "";
            txtNumFinal.Text = "";
            txtNumInicial.Focus();
        }

        private void CargarReporte()
        {
            //verificamos que se ingresen todos los datos.
            if (Util.ToValor(txtSerie.Text) > 0 && Util.ToValor(txtNumInicial.Text)>0 && Util.ToValor(txtNumFinal.Text)>0)
            {
                //establecemos los parametros en general
                paramsrpt.Clear(); 
                paramsrpt.Add(new InfoParamRpt("@ccod_cia", Session.getParametros().ccod_cia));
                //paramsrpt.Add(new InfoParamRpt("@ctip_docvta", Convert.ToInt32(cboTipoDocVta.SelectedValue)));
                paramsrpt.Add(new InfoParamRpt("@cnum_serie", Convert.ToInt32(txtSerie.Text)));
                paramsrpt.Add(new InfoParamRpt("@cnum_ini", Convert.ToInt64(txtNumInicial.Text)));
                paramsrpt.Add(new InfoParamRpt("@cnum_fin", Convert.ToInt64(txtNumFinal.Text)));

                try
                {
                    //segun el tipo de impresion 
                    if (rbtDocumentos.Checked)
                    {
                        paramsrpt.Add(new InfoParamRpt("@ctip_docvta", Convert.ToInt32(cboTipoDocVta.SelectedValue)));
                        //llamar al rpt segun el tipo de documento
                        if (cboTipoDocVta.Text == "FACTURA")
                        {
                            crpReporte.ReportSource = Util.setRptParams(RptPrintFacturas, paramsrpt);
                        }
                        else
                        {
                            crpReporte.ReportSource = Util.setRptParams(RptPrintBoletas, paramsrpt);
                        }
                    }
                    else if (rbtNotaCred.Checked)
                    {
                        crpReporte.ReportSource = Util.setRptParams(RptPrintNotasCredito, paramsrpt);    
                    }

                    tblExportar.Enabled = true;
                }
                catch (Exception ex)
                {
                    tblExportar.Enabled = false;
                }
            }
            else
            {
                MessageBox.Show("Debe ingresar el numero de serie y los numeros " +
                                Convert.ToChar(13) + "inicial y final para cargar el reporte", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);   
            }
        }

        private void tstComandos_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int indice = tstComandos.Items.IndexOf(e.ClickedItem);
            switch (indice)
            {
                case 0:     //nuevo
                    {
                        nuevaBusqueda(); 
                        break; 
                    }
                case 1:     //imprimir o mostrar
                    {
                        CargarReporte(); 
                        break; 
                    }
                case 2:
                    {
                        if (cboTipoDocVta.Text == "FACTURA")
                        {
                            Util.exportReporte(RptPrintFacturas);
                        }
                        else
                        {
                            Util.exportReporte(RptPrintBoletas);
                        }
                        break;
                    }
            }
        }

        private void rbtNotaCred_CheckedChanged(object sender, EventArgs e)
        {
            //blanquear cuadros de numeros de serie y numero de documento
            txtSerie.Text = "";
            txtNumInicial.Text = ""; 
            txtNumFinal.Text = ""; 


            if (rbtDocumentos.Checked)
            {
                cboTipoDocVta.Enabled = true;
            }
            else if (rbtNotaCred.Checked)
            {
                cboTipoDocVta.Enabled = false; 
            }
        }
    }
}